/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/10/14 9:24
 * @Copyright
 */
package Reflect;

import java.io.FileReader;
import java.util.Properties;

/*
验证反射机制的灵活性
Java代码写一遍，在不改变Java源代码的基础之上，可以做到不同对象的实例化
非常灵活（符合OCP开闭原则：对外扩展开放，对修改关闭）

在工作过程中，使用的高级框架包括：SSH、SSM
Spring Spring Hibernate
Spring Struts MyBatis
...
这些高级框架底层实现原理，都采用了反射机制，所以反射机制还是重要的，学会了反射机制有利于理解剖析框架底层的源代码
 */
public class ReflectTest3 {
    public static void main(String[] args) throws Exception {
        //通过IO流读取classinfo.properties文件
        FileReader reader=new FileReader("E:\\code\\TestDemo\\src\\demo\\Reflect\\classinfo.properties");
        //创建属性类对象
        Properties pro=new Properties(); //key和value都是String
        //加载
        pro.load(reader);
        //关闭流
        reader.close();

        //通过key获取value
        String className=pro.getProperty("className");
        System.out.println(className);

        //通过反射机制实例化对象
        Class c = Class.forName(className);
        Object obj = c.newInstance();
        System.out.println(obj);
    }
}
